<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="box">1</div>
    <script>
        // 对象的分类：
        // 1.内建对象
        // 由ES标准中定义的对象，在任何的ES的实现中都可以使用
        // 比如：Match 	String Number Boolean Function Object....
        // 2.宿主对象：
        // 由JS的运行环境提供的对象，目前来讲主要指由浏览器提供的对象
        // 比如 BOM DOM
        // 3.自定义对象
        // 由开发人员自己创建的对象

        // 创建对象：
        // 使用new关键字调用的函数，是构造函数construction
        // 构造函数是专门用来创建对象的函数

        // 读取对象中的属性
        // 语法：对象.属性名
        // 注意：如果读取对象中没有的属性，不回报错而是返回undefined
        // 修改对象中属性的值
        // 语法：对象.属性名 = 新值

        // 删除对象属性
        // 问题：能否通过delete window.属性名来删除一个全局变量？？？ 不能！Window比较特殊

        // 向对象中添加属性
        // 属性名：
        // 对象的属性名不强制要求遵守标识符的规范
        // 如果要是用特殊的属性名，不能采用.的方式来操作
        // 需要使用另一种方式：
        // 语法：对象[“属性名”] = 属性值
        // obj[“123”] = 1234;里面的引号不能省也不能写成obj.123 = 1234;//报错Unexpected number
        // 读取的时候也采用这种方式
        // 但是还是尽量遵守标准规范
        // 使用[ ]这种形式去操作属性，更加的灵活，
        // 在[ ]中可以直接传递一个变量，这样变量值是多少就会读取那个属性

        // 属性值：
        // JS对象的属性值，可以是任意的数据类型
        // 甚至也可以是一个对象

        // in 运算符
        // 通过该运算符可以检查一个对象中是否含有指定的属性
        // 如果有则返回true，没有则返回false
        // 语法：
        // “属性名” in 对象
        // 例如：检查obj对象中是否含有test2属性
        // Console.log( “test2” in obj);
        // JS中的变量都是保存到栈内存中的，
        // 基本数据类型的值直接在栈内存中存储，
        // 值与值之间是独立存在，修改一个变量不会影响其他的变量

        // 引用数据类型
        // 对象是保存到堆内存中的，每创建一个新的对象，就会在堆内存中开辟出一个新的内存空间，而变量保存的是内存地址（对象引用），如果两个变量保存的是同一个变量修改属性时，另一个也会受到影响
        var  a  =  10;        
        console.log('a='  +  window.a);  // a=10
                
        delete  window.a;        
        console.log(window.a);  // 10
                
        var  obj  = {            
            name: 'wuchao',
            age: 26        
        };        
        console.log(obj.age);  // 26
                
        delete  obj.age;        
        console.log(obj.age);  //undefined
        var div = document.getElementsByTagName('div')[0];
        var div1 = document.getElementsByName('div');
        console.log(div.id);
        console.log(div1)
    </script>
</body>

</html>